SDK API 接口说明(API-FUNCTION)

硬件SDK(Xlink Device SDK)相关 API-FUNCTION(函数)接口及说明如下:

1. 初始化SDK

  • xlink_int32 xlink_sdk_init(struct xlink_sdk_instance_t** sdk_instance);

  • 功能:初始化SDK函数。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    0 成功
    1 失败

2. 反初始化SDK

  • xlink_int32 xlink_sdk_uninit(struct xlink_sdk_instance_t** sdk_instance);

  • 功能:停止SDK调用。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    0 成功
    1 失败

3. 启用外网通讯

  • xlink_int32 xlink_sdk_connect_cloud(struct xlink_sdk_instance_t** sdk_instance);

  • 功能:启动外网通讯,需要在初始化SDK示例后调用。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    0 成功
    1 失败

4. 停止外网通讯

  • xlink_int32 xlink_sdk_disconnect_cloud(struct xlink_sdk_instance_t** sdk_instance);

  • 功能:停止外网通讯,在tcp连接断开时调用,调用后等tcp连接上服务器需要调用xlink_sdk_connect_cloud()来启用外网。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    0 成功
    1 失败

5. SDK后台执行函数

  • void xlink_sdk_process(struct xlink_sdk_instance_t** sdk_instance);

  • 功能:SDK后台执行函数,用户需要一直循环调用。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    0 成功
    1 失败

6. 重置SDK

  • xlink_int32 xlink_sdk_reset(struct xlink_sdk_instance_t** sdk_instance);

  • 功能:重置SDK,将SDK保存到设备flash的数据清空。当sdk被初始化后,调用此函数后,sdk会被重新初始化;相反停止sdk。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    0 成功
    1 失败

7. SDK写入Flash数据

  • xlink_int32 xlink_write_flash_cb(struct xlink_sdk_instance_t** sdk_instance, const xlink_uint8** data, xlink_int32 datalength);

  • 功能:此函数需要用户去实现,保存数据到flash。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    **data 写入数据指针的指针
    datalength 写入数据指针长度
    返回 说明
    xlink_int32 返回实际长度
    1 失败

8. SDK读取Flash数据

  • xlink_int32 xlink_read_flash_cb(struct xlink_sdk_instance_t** sdk_instance, xlink_uint8** buffer, xlink_int32 datamaxlength);

  • 功能:此函数需要用户去实现,读取flash数据到buffer。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    **buffer 存放数据指针的指针
    datamaxlength 存放数据指针可用空间
    返回 说明
    xlink_int32 返回实际长度
    1 失败

9. 发送数据

  • xlink_int32 xlink_send_cb(struct xlink_sdk_instance_t** sdk_instance, const xlink_uint8** data, xlink_int32 datalength, const xlink_addr_t** addr_t, xlink_uint8 flag);

  • 功能:此函数需要用户去实现,将数据内容发送到外网或内网。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    **data 数据指针的指针
    datalength 数据指针长度
    **addr_t 目标地址
    flag 0 表示内网数据,1 表示外网数据
    返回 说明
    xlink_int32 返回实际长度
    1 失败

10. 接收数据函数

  • xlink_int32 xlink_receive_data(struct xlink_sdk_instance_t** sdk_instance, const xlink_uint8** data, xlink_int32 datalength, const xlink_addr_t** addr_t, xlink_uint8 flag);

  • 功能:当设备接收到外网或内网数据,调用此接口处理。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    **data 存入的数据
    datalength 数据长度
    **addr_t 目标地址,flag为1时为NULL
    flag 0表示接收的是内网数据,1表示接收的是外网数据,其他保留
    返回 说明
    0 转发成功
    1 转发失败

11. 获取数据端点

  • xlink_int32 xlink_get_datapoint_cb(struct xlink_sdk_instance_t** sdk_instance, xlink_uint8** buffer, xlink_int32 datamaxlength);

  • 功能:此函数需要用户去实现内容,通常是服务器或者APP向设备获取数据端点时被调用,用户将设备所有的数据内容存放到data。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    **buffer 存放数据指针
    datamaxlength 存放数据指针可用空间
    返回 说明
    xlink_int32 返回实际长度

12. 设置数据端点

  • xlink_int32 xlink_set_datapoint_cb(struct xlink_sdk_instance_t** sdk_instance, const xlink_uint8** data, xlink_int32 datalength);

  • 功能:此函数需要用户去实现,通常是服务器或者APP向设备发送数据端点时被调用。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    **data 数据端点内容
    datalength 数据端点内容长度
    返回 说明
    xlink_int32 返回实际长度

13. SDK事件通知

  • void xlink_event_cb(struct xlink_sdk_instance_t** sdk_instance, const struct xlink_sdk_event_t** event_t);

  • 功能:此函数需要用户去实现,当SDK事件被触发时会进入此函数,用户判断事件类型来处理对应的事务。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    **event_t sdk 实例指针的指针
    返回 说明

    事件内容,具体参考“xlink_sdk_event_t”定义

14. 获取tick

  • xlink_uint32 xlink_get_ticktime_ms_cb(struct xlink_sdk_instance_t** sdk_instance);

  • 功能:此函数需要用户去实现,获取系统tick time,单位ms。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    xlink_uint32 返回系统tick time

15. 发送数据端点数据到服务器

  • xlink_int32 xlink_update_datapoint(struct xlink_sdk_instance_t** sdk_instance, xlink_uint16* messageid, const xlink_uint8** data, xlink_int32 datamaxlength, xlink_uint8 flag);

  • 功能:发送数据端点数据到服务器与APP。当服务收到后会通过“xlink_event_cb”事件来通知,通知类型为“EVENT_TYPE_REQUEST_CB”。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    *messageid 消息ID,SDK分配
    **data 发送的数据
    datamaxlength 数据长度(SDK单次发送数据数据不能超过1000字节)
    flag bit0 : 代表是否要触发告警,1是,0否 bit1 : 代表数据端点是否带有时间戳(毫秒-8个字节Unix时间戳-data=time+datapoint ),1是,0否(V6223以上版本)
    返回 说明
    xlink_uint32 上报的数据长度
    -1 上报失败
  • 使用样例:

16. 向服务器请求数据

  • xlink_int32 xlink_request_event(struct xlink_sdk_instance_t** sdk_instance, xlink_uint16* messageid, struct xlink_sdk_event_t* event_t);

  • 功能:通过外网请求服务器数据。当服务收到后会通过“xlink_event_cb”事件来通知,通知类型为对应的请求类型。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    *messageid 消息ID,SDK分配
    *event_t 请求的事件类型
    返回 说明
    0 转发成功
    1 转发失败

17. 获取Device ID

  • xlink_int32 xlink_get_device_id(struct xlink_sdk_instance_t **sdk_instance);

  • 功能:获取设备ID。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    xlink_int32 小于1表示无效,其他有效

18. 获取Device Key

  • xlink_int32 xlink_get_device_key(struct xlink_sdk_instance_t **sdk_instance, xlink_uint8 **buffer);

  • 功能:获取设备KEY。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    **buffer 外部用于缓存key的指针的指针
    返回 说明
    xlink_int32 返回长度为16时buffer数据有效

19. 上报log

  • xlink_int32 xlink_report_log(struct xlink_sdk_instance_t** sdk_instance, xlink_uint8 log_level, xlink_uint8** data, xlink_uint32 datalength);

  • 功能:上报不同级别的log 信息,可以通过log_level设置。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    log_level 0:DEBUG 1:INFO 2:WARN 3:ERROR
    **data log数据指针的指针
    datalength log数据长度
    返回 说明
    xlink_int32 >=0:成功 -1:失败 -2:数据过长 -3:log_level非法 -4:设备没激活

20. 上报设备位置信息

  • XLINK_FUNTION xlink_int32 xlink_upload_location_data(struct xlink_sdk_instance_t **sdk_instance, struct xlink_location_t **xlink_location, xlink_uint16 *message_id);

  • 功能:上报设备位置信息,若需要判断是否上报成功,可以在通过判断“EVENT_TYPE_REQUEST_CB”事件的 message id与上报,确定是否成功。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    **xlink_location 位置实例指针的指针
    *message_id message id的指针
    返回 说明
    xlink_int32 >=0 成功 -1 设备未上线 -2 地址信息大于500bytes

21. 通知云端开始产测

  • XLINK_FUNTION xlink_int32 xlink_production_test_start(struct xlink_sdk_instance_t **sdk_instance);

  • 功能:通知云端设备开始产测,此接口仅在脱离产测工具的测试环境下测试才调用。

  • 备注:

    • 通知成功会触发“EVENT_TYPE_PRODUCTION_TEST”。
    • 若(*event_t)->event_struct_t.pdct_cb_t.pdct_event_t为EVENT_TYPE_ENTER_PDCT_TEST_SUCCESS,表示成功。
    • 若(*event_t)->event_struct_t.pdct_cb_t.pdct_event_t为EVENT_TYPE_ENTER_PDCT_TEST_FAIL,表示失败。
    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    xlink_int32 >=0 成功 -1 设备未上线

22. 通知云端结束产测

  • XLINK_FUNTION xlink_int32 xlink_cloud_production_test_end(struct xlink_sdk_instance_t sdk_instance, xlink_uint8 data, xlink_int32 datalength);

  • 功能:通知云端设备结束产测,并上报产测结果数据。此接口仅在脱离产测工具的测试环境下测试才调用,调通后会重置设备以及云端设置。

  • 备注:

    • 通知成功会触发“EVENT_TYPE_PRODUCTION_TEST”。
    • 若产测事件类型为EVENT_TYPE_PDCT_TEST_END_SUCCESS,表示成功。请主动断开tcp与服务器连接,并停止重连操作,否则设备会重新激活上线。
    • 若产测事件类型为EVENT_TYPE_PDCT_TEST_END_FAIL,表示失败。
    参数 说明
    **sdk_instance sdk 实例指针的指针
    **data 产测结果数据指针的指针
    datalength 产测结果数据长度
    返回 说明
    xlink_int32 >=0 成功 -1 设备未上线

23. 产测工具获取信号强度,WIFI工作模式的回调

  • XLINK_FUNTION xlink_int32 xlink_get_rssi_cb(struct xlink_sdk_instance_t **sdk_instance, xlink_uint16 *result, xlink_int16 *rssi, xlink_uint16 *AP_STA);

  • 功能:产测获取信号强度的流程,会回调此函数拿信号强度和工作模式

    参数 说明
    **sdk_instance sdk 实例指针的指针
    *result 接收处理结果的指针 0:成功 1:失败
    *rssi 接收信号强度的指针
    *AP_STA wifi模式,0:STA模式 1:AP模式 2:非wifi固件
    返回 说明
    xlink_int32 0 成功 !=0 失败

24. 产测工具获取自定义产测数据的回调

  • XLINK_FUNTION xlink_int32 xlink_get_custom_test_data_cb(struct xlink_sdk_instance_t **sdk_instance, xlink_uint16 *result,xlink_uint8 **data, xlink_int32 datamaxlength);

  • 功能:产测自定义产测数据的流程,会回调此函数拿自定义产测数据。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    *result 接收处理结果的指针 0:成功 1:失败
    **data 自定义产测数据指针的指针
    datamaxlength SDK能接收最大的自定义产测数据的长度
    返回 说明
    xlink_int32 0 成功 !=0 失败

25. 使能产测

  • XLINK_FUNTION xlink_int32 xlink_enable_production_test(struct xlink_sdk_instance_t **sdk_instance, xlink_uint8 flag);

  • 功能:

    参数 说明
    **sdk_instance sdk 实例指针的指针
    flag 0:失能 1:使能
    返回 说明
    xlink_int32 0 成功 !=0 失败

26. 使能配对

  • XLINK_FUNTION xlink_int32 xlink_enable_local_pairing(struct xlink_sdk_instance_t **sdk_instance, xlink_uint16 time);

  • 功能:使能配对,并指定时间,在时间范围内可以进行配对。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    time 使能时间(单位:秒),0为无限制时长
    返回 说明
    xlink_int32 0 成功 !=0 失败

27. 失能配对

  • XLINK_FUNTION xlink_int32 xlink_disable_local_pairing(struct xlink_sdk_instance_t **sdk_instance);

  • 功能:失能配对,分享设备的途径配对会跳过此配置。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    xlink_int32 0 成功 !=0 失败

28. APP probe设备

  • XLINK_FUNTION xlink_int32 xlink_probe_datapoint_cb(struct xlink_sdk_instance_t **sdk_instance, const xlink_uint8 ** dp_idx, xlink_uint8 dp_idx_length, xlink_uint8 **buffer, xlink_int32 datamaxlength) ;

  • 功能:APP在probe设备时,会回调此函数获取对应的数据端点。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    **dp_idx 需要probe数据端点的index数组的指针
    dp_idx_length 需要probe数据端点的index数组的长度
    **buffer 需要返回给SDK对应的数据端点的数据
    datamaxlength SDK可以接收数据端点数据的最大长度
    返回 说明
    xlink_int32 0 没有数据端点数据 >0 数据端点数据的实际长度

29. 使能订阅

  • XLINK_FUNTION extern xlink_int32 xlink_enable_local_subscription(struct xlink_sdk_instance **sdk_instance, xlink_uint16 time);

  • 功能:使能订阅,并指定时间,在时间范围内可以进行订阅,最大有效时间300秒。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    time 使能时间(单位:秒),0为无限制时长
    返回 说明
    xlink_int32 0 成功 !=0 失败

30. 失能订阅

  • XLINK_FUNTION extern xlink_int32 xlink_disable_local_subscription(struct xlink_sdk_instance **sdk_instance);

  • 功能:失能订阅。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    返回 说明
    xlink_int32 0 成功 !=0 失败

31. 上报固件版本

  • XLINK_FUNTION xlink_int32 xlink_update_current_verison(struct xlink_sdk_instance** sdk_instance, xlink_uint8 id_count, void * data);

  • 功能:上报固件版本。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    id_count 设备上报的数量
    *data 传入组合型的 xlink_upgrade_version_package_t 定义的数据包组合
    返回 说明
    xlink_int32 0 成功 !=0 失败

32. 物模型数据下发

  • XLINK_FUNTION xlink_int32 xlink_attribute_set_service_cb(struct xlink_sdk_instance*sdk_instance, const char payload, xlink_uint16 payload_length, xlink_uint8 *data, xlink_int32datamaxlength);
  • 功能:此函数需要用户去实现,当物模型数据下发时触发此函数,用户自行实现处理。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    * payload 物模型下发数据
    payload_length 物模型下发数据长度
    * data 物模型返回数据
    datamaxlength 最大数据返回长度
    返回 说明
    xlink_int32 数据返回长度
  • 下发数据格式,input为用户收到的属性数据

    {
        "v":2,
        "input":{
            "属性字段":属性值
        }
    }
  • 返回数据格式

    {
        "v": 2,
        "code": 200,
        "output":{}
    }

33. 物模型数据上报

  • XLINK_FUNTION xlink_int32 xlink_thing_publish_attribute(struct xlink_sdk_instancesdk_instance, xlink_uint16 messageid, xlink_uint8 data, xlink_int32 datalength);
  • 功能:用户上报物模型数据调用此函数。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    *messageid 消息ID,SDK分配
    * data 物模型返回数据
    datamaxlength 最大数据返回长度
    返回 说明
    xlink_int32 数据发送长度
  • 上报数据格式

    {
        "v":2,
        "time":上报时间戳,
        "attribute":{
            "属性字段":属性值
        }
    }

    34. 物模型服务订阅

  • XLINK_FUNTION xlink_int32 xlink_sub_service(struct xlink_sdk_instance *sdk_instance, const char name);

  • 功能:用户用此函数订阅自己的服务。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    * name 物模型服务名称
    返回 说明
    xlink_int32 数据发送长度

35. 物模型服务回调

  • XLINK_FUNTION xlink_int32 xlink_service_cb(struct xlink_sdk_instance sdk_instance, const charname,const char payload, xlink_uint16 payload_length, xlink_uint8 *data, xlink_int32 datamaxlength);
  • 功能:此函数需要用户去实现,当物模型数据下发时触发此函数,用户自行实现处理。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    * name 物模型服务名称
    * payload 物模型下发数据
    payload_length 物模型下发数据长度
    * data 物模型返回数据
    datamaxlength 最大数据返回长度
    返回 说明
    xlink_int32 数据返回长度
  • 下发数据格式,input为用户收到的属性数据,与物模型同名服务需要的输入参数对应

    {
        "v":2,
        "input":{
            "属性字段":属性值
        }
    }
  • 返回数据格式,output的属性字段和属性值要与物模型同名服务需要的输出参数对应

    {
        "v": 2,
        "code": 200,
        "output":{
        	"属性字段":属性值
    	}
    }

    36. 物模型数据上报

  • XLINK_FUNTION xlink_int32 xlink_thing_event_report(struct xlink_sdk_instance* sdk_instance,xlink_uint16 messageid,const charname, xlink_uint8 data, xlink_int32 datalength);

  • 功能:用户上报事件调用此函数。

    参数 说明
    **sdk_instance sdk 实例指针的指针
    *messageid 消息ID,SDK分配
    * name 物模型事件名称
    * data 物模型返回数据
    datamaxlength 最大数据返回长度
    返回 说明
    xlink_int32 数据发送长度
  • 上报事件数据格式,属性名和属性值与后端物模型同名事件保持一致

    {
        "v":2,
        "time":0,
        "extra":{
            "属性名称":属性值
        }
    }

    注意事项

目前,所有用户在一般情况下均能使用硬件SDK(Xlink Device SDK)。
主要限制有:

  • 硬件SDK(Xlink Device SDK)设计框架是跑单线程的,对于具有多线程操作并不支持
  • 需要注意对内存的操作保护
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题